package com.ldatum.crm.util;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class VerifyCodeUtil {
	//step1 �ȴ���һ������
	static BufferedImage image = new BufferedImage(60, 25, BufferedImage.TYPE_INT_RGB);
	public VerifyCodeUtil(){}
	/**
	 * �����֤��
	 * @return ��֤��
	 */
	public static String  getcode(){
		//�����֤���
		List<Character> pools = new ArrayList<Character>();
		for(char i = 'A';i < 'Z';i++){
			if(i!='O'){
				pools.add(i);
			}
		}
		for(char i = 'a';i < 'z';i++){
			if(i!='o'){
				pools.add(i);
			}
		}
		for(char i = '0';i < '9';i++){
			if(i!='0'){
				pools.add(i);
			}
		}
		//�����λ�ַ����֤��
		char[] codes = new char[4];
		int index = 0;
		Random r = new Random();
		while(true){
			int i = r.nextInt(pools.size());//��������
			codes[index++] = pools.get(i);
			if(index==codes.length){
				break;
			}
		}
		String Verifycodes = "";
		for(int i = 0;i < codes.length;i++){
			Verifycodes += codes[i];
		}
		return Verifycodes;
		
	}
	/**
	 * �����֤��ͼƬ������
	 * @param codes 
	 * @return image
	 */
	public static BufferedImage getCodeImage(String codes){
		//step2 ͨ��image �����û���
		Graphics g = image.getGraphics();
		//step3 ���û���ı���ɫ
		Random r = new Random();
		g.setColor(new Color(255,255,255));//���û��ʵ���ɫ
		g.fillRect(0, 0, 60, 25);//������仭���Ĵ�С
		/**
		 * ��ͼƬ�ı߿�
		 */
		g.setColor(new Color(0,0,0));
		g.drawRect(0, 0, 60, 25);//����ߺ��ϱߵı߿�
		g.drawRect(0, 0, 60, 24);//���ײ��ı߿�
		g.drawRect(59, 0, 0, 25);//���ұߵı߿�
		/**
		 * ��һЩ�����߶�
		 */
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.drawLine(r.nextInt(60),r.nextInt(25),r.nextInt(60),r.nextInt(25));
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.drawLine(r.nextInt(60),r.nextInt(25),r.nextInt(60),r.nextInt(25));
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.drawLine(r.nextInt(60),r.nextInt(25),r.nextInt(60),r.nextInt(25));
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.drawLine(r.nextInt(60),r.nextInt(25),r.nextInt(60),r.nextInt(25));
		
		g.setColor(new Color(r.nextInt(255),r.nextInt(255),r.nextInt(255)));
		g.setFont(new Font("Arial",2,20));
		g.drawString(codes, 10, 17);
		return image;
	}
}
